配置文件
每个应用包中都包括一个名为package.json
的配置文件 , 文件内容格式为JSON . 该文档将详细说明配置文件中的属性 .
快速开始
以下内容为最简单的配置文件内容:
{
"main": "index.html",
"name": "nw-demo",
}
配置文件中只需要两个配置字段就可以开始NW.js应用 . 两个属性说明信息如下:
main
: NW.js开始运行打开的index.html
文件name
: 应用名称为nw-demo
必要字段
每个应用配置文件中必须要提供以下属性说明应用描述信息 .
main
{String}
NW.js开始时需要加载的HTML页面或者JavaScript脚本 .
该字段可以指定URL , 也可以指定文件名称 , 比如:index.html
或者script.js
, 或者指定路径 , 该路径相对package.json
所在目录 .
name
{String}
应用名称 . 名称由数字 , 小写字母 , "." , "_"或者"-"组成 , 如果包含其他内容将无效.
name
字段内容全局唯一 , NW.js应用的数据将存储在该字段定义的名称目录中 .
特性控制字段
以下字段控制NW.js提供的特性以及如何打开主装口 .
nodejs
{Boolean}
是否支持Node , false值为不支持 .
node-main
{String}
指定node.js脚本文件路径 . 窗口加载DOM之前启动Node环境时执行 .
domain
{String}
指定chrome-extension://协议URL , 供应用中使用的主机地址 . 网页引擎将共享相同cookies给相同域名中的应用和网站 .
single-instance
0.13版本之后该属性将弃用 . 参考[版本0.12到0.13迁移](../For Users/Migration/From 0.12 to 0.13.md) .
{Boolean}
应用单例方式运行 . 默认值为true
.
NW.js默认运行一个应用运行 . 如果需要应用同时多例运行 , 该属性设置为false
.
bg-script
{String}
后台脚本 . 应用开始运行时执行后台脚本 .
window
{Object}
窗体样式控制 , 参考窗体子字段 .
webkit
{Object}
WebKit特性控制 , 参考WebKit子字段 .
user-agent
{String}
重写应用请求页面中的User-Agent
信息 .
以下变量内容可以动态设置User-Agent
内容:
%name
: 替换配置文件中的name
字段 .%ver
: 替换配置文件中的version
字段 .%nwver
: 替换NW.js版本 .%webkit_ver
: 替换WebKit引擎版本 .%osinfo
: 替换系统以及CUP信息 .
node-remote
0.13版本开始该属性发生变化 . 参考[版本0.12到0.13迁移](../For Users/Migration/From 0.12 to 0.13.md) .
{Array}
or{String}
远程页面启用Node . 控制启用站点使用该特性 . 数组中各项匹配模式在Chrome扩展中使用 .
A match pattern is essentially a URL that begins with a permitted scheme (http
, https
, file
, or ftp
, and that can contain '*'
characters. The special pattern <all_urls>
matches any URL that starts with a permitted scheme. Each match pattern has 3 parts:
匹配模式本质上为URL , 由http
, https
, file
, ftp
或者'*'
开始 . 其中'*'
代表匹配所有URL . 每个匹配模式由三部分组成:
scheme
— 例如,http
或file
或*
host
— 例如,www.google.com
或*.google.com
或*
; 如果模式为文件类型将不包含该部分 .path
— 例如,/*
,/foo*
, 或/foo/bar
. 路径必须为根目录权限 .
基础语法:
<url-pattern> := <scheme>://<host><path>
<scheme> := '*' | 'http' | 'https' | 'file' | 'ftp'
<host> := '*' | '*.' <除了'/'和'*'的任意字符>+
<path> := '/' <任意字符>
chromium-args
{String}
指定chromium命令行参数 .
如果需要自定义chromium参数描述应用可以使用该参数 . 例如 , 禁止GPU加速视频显示 , 可以添加"--disable-accelerated-video"
参数到chromium-args"
. 如果需要添加多个参数 , 两个参数之间用空格分开 . 该参数需要使用引号括起进行标记 .
参考命令行参数获取更多详细信息 .
js-flags
{String}
指定JS引擎(V8)可以使用的特性 . 例如打开协调代理(Harmony Proxies
)以及集合(Collections):
{
"name": "nw-demo",
"main": "index.html",
"js-flags": "--harmony_proxies --harmony_collections"
}
inject_js_start
inject_js_end
{String}
本地文件名 , 相对于应用路径 , 指定窗口使用JavaScript文件路径 .
inject_js_start
: CSS文件执行之后 , 其他DOM或脚本运行之前 , 注入JavaScript代码 .
inject_js_end
: 页面document对象加载之后 , onload
时间触发之前 , 注入JavaScript代码 . 主要作为新窗口中Window.open()
的参数注入JavaScript代码 .
additional_trust_anchors
{Array}
数组由多个PEM编码的证书组成 , 例如"-----BEGIN CERTIFICATE-----\n...certificate data...\n-----END CERTIFICATE-----\n"
.
证书作为附加可用的根证书使用 , 允许连接自签名证书或者CA签发机构颁发证书的服务 .
dom_storage_quota
{Integer}
DOM存数限制数量 , 单位为mega bytes (MB) . 建议设置为期望值的两倍 .
no-edit-menu (Mac)
!!! warning "Deprecated" This property is deprecated since 0.13.0. See Migration Notes from 0.12 to 0.13.
0.13版本之后该属性将弃用 . 参考[版本0.12到0.13迁移](../For Users/Migration/From 0.12 to 0.13.md) .
{Boolean}
Mac OS X系统中不显示编辑
菜单 . 默认值为false
. 该属性只能在Mac OS X系统中使用 .
Window子字段
窗口子字段默认情况被继承到使用window.open()
或<a target="_blank">
打开的子窗口 . 以下子字段不会被继承 , 新打开的窗口将使用默认值:
fullscreen
->false
kiosk
->false
position
->null
resizable
->true
show
->true
所有窗口子字段可以使用new-win-policy
事件重写 .
id
{String}
窗口身份值 . 该值用来记住窗口的尺寸以及位置 , 当窗口被打开时完成恢复 . 参考Chrome应用文档
title
{String}
NW.js创建的窗口标题 . 应用开始显示标题信息 .
width
height
{Integer}
主窗口初始宽度和高度 .
toolbar
0.13版本开始该属性发生变化 . 参考[版本0.12到0.13迁移](../For Users/Migration/From 0.12 to 0.13.md) .
{Boolean}
导航栏中是否显示工具条 .
icon
{String}
窗口图标路径 .
position
{String}
控制窗口放置位置 , 可以设置三个值分别为null
,center
,mouse
.
min_width
min_height
{Integer}
窗体最小宽度和高度 .
max_width
max_height
{Integer}
窗体最大宽度和高度 .
as_desktop (Linux)
{Boolean}
X11环境下 , 作为桌面背景显示 , 只适用Linux系统 .
resizable
{Boolean}
窗体大小可调整 .
注意 , Mac OS X系统中该属性设置为false , 框架中设置为true , 窗口仍然可以全屏 . 全屏控制需要设置fullscreen
.
always_on_top
0.13版本开始该属性发生变化 . 参考[版本0.12到0.13迁移](../For Users/Migration/From 0.12 to 0.13.md) .
{Boolean}
窗口总是在其他窗口之上 .
visible_on_all_workspaces (Mac & Linux)
0.13版本开始该属性发生变化 . 参考[版本0.12到0.13迁移](../For Users/Migration/From 0.12 to 0.13.md) .
{Boolean}
窗口同时在所有的工作区中可见 . 该功能只适用在有多工作区的系统中 , 目前只有Mac OS X以及Linux系统 .
fullscreen
{Boolean}
窗口全屏 .
注意 , 即使框架将全屏设置为false , 窗体将阻止鼠标获取屏幕边缘 . 如果全屏应该避免设置为false .
show_in_taskbar
{Boolean}
窗口可以显示到任务栏或者dock中 , 默认为true
.
frame
{Boolean}
设置为false
标记窗口为无框架 .
注意 , 全屏中如果设置为无框架 , 窗体将阻止鼠标获取屏幕边缘 . 如果为全屏状态避免设置为true .
show
{Boolean}
值为false
, 应用启动之后将被隐藏 .
kiosk
{Boolean}
启用Kiosk
模式 . 该模式中窗口全屏并且阻止应用离开 , 这样应用需要提供离开Kiosk
模式方法 . 该模式主要使用在展示 .
transparent
{Boolean}
透明窗体模式 , 默认为false
.
CSS中控制rgba背景之中的透明度 . 命令行参数--disable-transparency
也可以显示该特性 .
透明窗体区域支持穿透点击 , 命令行参数中使用--disable-gpu
.
WebKit子字段
double_tap_to_zoom_enabled
{Boolean}
启用两指缩放功能 , 默认为false
.
plugin
{Boolean}
加载浏览器扩展插件 , 比如Flash , 默认为true
.
其他字段
Packages/1.0标准说明其他package.json
中提供的字段 .